Memory devices are used to store information in a number of applications; for this purpose, each memory device comprises a plurality of memory cells, each one for storing one or more logic values (such as one bit). For example, non-volatile memory devices are used to store information that has to be retained even when the memory devices are not powered. Particularly, in Phase-Change Memory, or PCM, (non-volatile) memory devices each memory cell is based on a storage element made of a phase-change material, which may be reversibly switched between an amorphous phase and a crystalline phase having different electrical characteristics that represent corresponding logic values. Particularly, the phase of the storage elements is stable below a predefined temperature (such as 150° C.). The phase may be changed by heating the material over that temperature. When the storage elements are brought over a nucleation temperature (such as 200° C.) and then cooled slowly, their change-phase material becomes crystalline; conversely, when the storage elements are brought over a higher melting temperature (such as 600° C.) and then cooled rapidly, their change-phase material becomes amorphous.
The memory devices may be subject to faults during a reading of their memory cells, which faults may cause corresponding errors in the logic values that are read. For example, in PCM memory devices that are embedded in Integrated Circuits (IC), or embedded PCM (ePCM), the memory devices may be written in the factory before their shipping. In this case, the memory devices may be subject to high temperatures during their mounting on Printed Circuit Boards (PCB) in the field (for example, during a reflow of corresponding solder bumps). However, this may cause a drift of the phase of the storage elements of the memory cells. In any case, a fault rate of the PCM memory devices may significantly increase with their aging (because of retention phenomena of the phase of the storage elements).
Error Correction Codes, or ECC, are known in the art for improving a reliability of the memory devices. In this case, (redundancy) control information is added to the (actual) payload information of interest. For example, one or more control bits (also called check bits) of the control information are added to each data word (formed by one or more bits of the payload information), thereby creating a code word that is stored in the memory device. The control information is used for detecting and correcting (if possible) some errors in the reading of the memory cells, so as to tolerate the corresponding faults without impairing operation of the memory devices. The capability of correcting the errors or of simply detecting the errors (but without correcting them) depends on the amount of control information that is added to the payload information. For example, code words each one composed of a data word of 32 bits plus 7 control bits allow correcting 1 error, whereas code words each one composed of a data word of 64 bits plus 21 control bits allow correcting 3 errors.
However, any increase of the amount of control information (to increase the error correction and detection capability) accordingly reduces the capacity of the memory devices. Moreover, the complexity of a circuitry used to implement the above-mentioned ECC functionality increases with the amount of the control information. This complexity of the ECC circuitry involves a waste of area of the memory devices, and then a further reduction of their capacity. In addition, this complexity of the ECC circuitry increases an access time of the memory devices (thereby slowing down their entire operation) and a power consumption thereof.